/**
 * @Author: 
 * 该文件主要为table的增删改查
 */
layui.use(['laytpl','table','form','publicTool','jqueryExtend'], function(){
    var table = layui.table,
        $ = layui.jquery,
        laytpl = layui.laytpl,
        form = layui.form,
        publicTool = layui.publicTool,
        $extend = layui.jqueryExtend(),
    tableOperate = {
        tableInitObj: function(){
            return [ // 标题栏以及表格行参数，如：label，name，with，sort（是否排序），fixed（left,right左或右固定），value...等，也可以自己定,如isDisplay是我自己定的，用于是否显示该form
                {field:'id', title: 'ID', width:180, sort: true, value: 'ssa',isFormDisplay: true},
                {field:'username', title: '用户名', width:180},
                {field:'sex', title: '性别', width:180, sort: true},
                {field:'city', title: '城市', width:80},
                {field:'sign', title: '签名', width:177},
                {field:'experience', title: '积分', sort: true, width:80},
                {field:'score', title: '评分', sort: true, width:80},
                {field:'classify', title: '职业', width:80},
                {field:'wealth', title: '财富', sort: true, width:135},
            ]
        },
        tableInit: function() {
            var defaults = this.tableInitObj();
            defaults.unshift({checkbox: true, fixed: true});  //插入复选框
            defaults.push({field: 'caozuo',fixed: 'right',title: '操作',width: 230,align: 'center',toolbar: '#tableEvent'});      //插入编辑和删除按钮，固定在右侧  
            table.render({
                cols: [defaults],
                height: 'full-100', //容器高度
                id: 'templateTable',
                elem: '#templateTable', //指定原始表格元素选择器（推荐id选择器）
                page: true, //开启分页
                initSort: {
                    field: 'id', //排序字段，对应 cols 设定的各字段名
                    type: 'asc' //排序方式  asc: 升序、desc: 降序、null: 默认排序
                },
                where: {  //接口请求的携带参数
        
                },
                limit: 10, //默认采用60
                loading: true,
                url: 'src/js/data/tableDate.json',
                done: function(res, curr, count) {
                    //tableOperate.tableVue();          
                }
            });
            this.tableEdit();
        },
        tableEdit: function() {
            var storage=window.localStorage;
            storage.setItem("c",3);
            var tableDefaults = tableOperate.tableInitObj();
            //监听表格复选框选择
            table.on('checkbox(templateTable)', function(obj){
                console.log(obj)
            });
            //监听表格右侧固定的工具条
            table.on('tool(templateTable)', function(obj){
                var data = obj.data;
                if(obj.event === 'del'){
                    tableDel(obj, false);
                } else if(obj.event === 'edit'){
                    tableEdit([data]);
                }
            });
            //监听表格新增修改的表单提交
            form.on('submit(formSubmit)', function(data){
                console.log(data)
                formSubmit({
                    url: '',
                    data: data.field
                });
                return false; //阻止表单跳转。如果需要表单跳转，去掉这段即可。
            });                     
            var active = {
                tableQuery: function(){ //查询搜索                  
                    tableOperate.tableReload({

                    });
                },
                tableAdd: function(){ //添加
                    tableEdit();
                },
                tableDel: function(){  //批量删除
                    var checkStatus = table.checkStatus('templateTable')
                    ,data = checkStatus.data;
                    if(!data.length){
                        layer.msg('至少选择一行数据',{time:2000});
                        return;
                    };
                    tableDel(checkStatus, true);                   
                }
            }; 
            function formSubmit(obj){
                var defaults = $.extend({
                   successfn: function(data) {
                        if(!data.code){
                            layer.msg(data.msg,{time:2000});
                            return;
                        }
                        layer.close(index);                        
                    },
                    errorfn: function(data) {
                        layer.msg(data.msg,{time:2000});
                    }
                }, obj);
                $.ajaxRequest(defaults);
            };
            function tableEdit(data, callback){
                if(!(data == undefined) && (!$.isArray(data) || !$.isJson(data[0]))){
                    layer.msg('数据格式有误');
                    return;
                };
                var data = { //数据
                    "list": data == undefined ? [{}] : data
                },
                    getTpl = $('#formUnit').html();
                laytpl(getTpl).render(data, function(html){
                    $('.dynamic-content').html(html);                  
                    var openObj = {
                        "content": $('.templateTable-form').html(),
                        "title":'增加',
                        "skin": 'lay-padding-over',
                        "btn": ['立即提交','重置'],
                        "success": function(index, layero){ 
                        },
                        "yes": function(index, layero){
                            layero.find('button.submit').trigger('click');
                        },
                        "btn2": function(index, layero){
                            layero.find('button.reset').trigger('click');
                            return false;
                        }
                    };
                    publicTool.layerOpen(openObj);
                 });
            };
            function tableDel(obj, isMultiLine){
                layer.confirm('确定要删除选中的数据吗', function(index){
                    var delData = obj.data;
                    $.ajaxRequest({
                        url: '',
                        data: delData,
                        successfn: function(data) {
                            if(!data.code){
                                layer.msg(data.msg,{time:2000});
                                return;
                            };
                            if(isMultiLine){
                                table.reload('templateTable');
                            }else{
                                obj.del();
                            };                           
                            layer.close(index);                                 
                        },
                        errorfn: function(data) {
                            layer.msg(data.msg,{time:2000});
                        }
                    })
                });
            }      
            $('.templateTableBtn .layui-btn').on('click', function(){
                var type = $(this).attr('event-type');
                active[type] ? active[type].call(this) : '';
            });
        },
        tableReload: function(obj) {
            table.reload('templateTable', {
                where: {
                    key: obj || {}
                }
            });
        }
    };
    tableOperate.tableInit(); 
});


